import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
# Memory 组件通常在 langchain.memory 或 langchain_community.memory 中
from langchain.memory import ConversationBufferMemory, ConversationBufferWindowMemory
# ConversationChain 是一个经典的、内置 Memory 支持的链
from langchain.chains import ConversationChain

# 加载环境变量
load_dotenv()
print("环境变量已加载。")

# 初始化 LLM (建议使用 Chat Model 以获得更好的对话效果)
llm = ChatOpenAI(
    model="deepseek-chat",
    openai_api_key=os.getenv("DEEPSEEK_API_KEY"),
    openai_api_base=os.getenv("DEEPSEEK_API_BASE")
)
print("Chat Model 初始化成功。")

# --- 1. 使用 ConversationBufferMemory --- 
print("\n--- 1. 使用 ConversationBufferMemory (存储所有历史) --- ")

# 初始化 Buffer Memory
memory_buffer = ConversationBufferMemory()
print("ConversationBufferMemory 初始化成功。")

# 创建 ConversationChain，传入 LLM 和 Memory
# verbose=True 会打印链的详细执行过程，包括发送给 LLM 的完整提示
conversation_buffer = ConversationChain(
    llm=llm,
    memory=memory_buffer,
    verbose=True 
)

while True:
    inp = input("请输入：")
    response = conversation_buffer.run(inp)  # 仅返回响应文本
    print(f"用户: {inp}")
    print(f"AI: {response}")  


